﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace FlyingCircusWebIS.Models
{
    public interface IReservaService
    {
        List<ValidationResult> ValidarEntidade(Reserva entidade);

        bool Adicionar(Reserva entidade);

        List<ValidationResult> ValidaAdicionar(Reserva entidade);

        bool Atualizar(Reserva entidade);

        List<ValidationResult> ValidaAtualizar(Reserva entidade);

        Reserva BuscarPorId(int id);
        
        List<Reserva> Listar();

        List<Reserva> ListarReservasDoVoo(int id);

        List<GraficoItemDescricaoQuantidade> GerarModelGraficoFormasPagamento();

        List<CidadeRanking> GerarRelacaoDeCidadesDestinoRaking(int quantidade);

        List<GraficoItemDescricaoQuantidadeDecimal> GerarModelGraficoFaturamento();

        Decimal CalcularValorDaReserva(int idVoo, int idCliente, string codCupom);

        List<Reserva> ListarReservasDaPessoa(int idPessoa);

        bool CancelarReservaPorId(int id);

        List<LogReserva> ListarLogsReservaPorTipoModificacao(string modificacao = "D");

        string ApresentaAssentoSelecionado(int assentoSelecionado, int idModeloAeronave);

        int CalcularQntReservasParaVoo(int idVoo);
    }
}
